home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / c01oop.zip / CPPWKBK / CPPV4-5.CPP < prev    next >
C/C++ Source or Header  |  1992-08-25  |  1KB  |  67 lines

  1. #define HEADER "C++ Problem 4.5 by Rick Conn using Borland C++"
  2.  
  3. #include <stdio.h>
  4.  
  5. class base {
  6. protected:
  7.   char *msg;
  8. public:
  9.   base(char *);
  10.   ~base();
  11.   void print(void);
  12. };
  13.  
  14. class derived1 : base {
  15. public:
  16.   derived1(char *);
  17.   ~derived1();
  18. };
  19.  
  20. class derived2 : derived1 {
  21. public:
  22.   derived2(char *);
  23.   ~derived2();
  24. };
  25.  
  26. base::base (char *m) {
  27.   msg = m;
  28.   printf("Base constructor called with message %s\n", msg);
  29. }
  30.  
  31. base::~base() {
  32.   printf("  Base destructor called with message %s\n", msg);
  33. }
  34.  
  35. void base::print(void) {
  36.   printf(" with message %s\n", msg);
  37. }
  38.  
  39. derived1::derived1 (char *m) : base(m) {
  40.   printf("  Derived1 constructor called");
  41.   print();
  42. }
  43.  
  44. derived1::~derived1() {
  45.   printf("  Derived1 destructor called");
  46.   print();
  47. }
  48.  
  49. derived2::derived2 (char *m) : derived1(m) {
  50.   printf("  Derived2 constructor called\n");
  51. }
  52.  
  53. derived2::~derived2() {
  54.   printf("Derived2 destructor called\n");
  55. }
  56.  
  57. void main(void)
  58. {
  59.   printf("%s\n", HEADER);
  60.  
  61.   derived2 x ("X");
  62.   {
  63.     derived2 y ("Y");
  64.   }
  65.   derived2 z ("Z");
  66. }
  67.